package net.sea.setup.action.parse;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import net.sea.commons.constants.AppConstants;
import net.sea.setup.enums.InstallDir;

/**
 * 安装文件扫描类
 * 
 * @author 华成伍
 *
 */
public class Scanner {
	/**
	 * 扫描获取所有的安装文件
	 * 
	 * @return 获取的安装文件列表
	 */
	public List<File> scan() {
		List<File> fileList = new ArrayList<File>();
		// 获取所有的安装目录
		InstallDir[] dirs = InstallDir.values();
		for (InstallDir installDir : dirs) {
			fileList.addAll(scan(installDir.getDir()));
		}
		return fileList;
	}

	/**
	 * 扫描指定目录下的安装文件
	 * 
	 * @param dir
	 *            指定目錄
	 * @return 获取的安装文件列表
	 */
	public List<File> scan(String dir) {
		List<File> fileList = new ArrayList<File>();
		File file = new File(dir);
		if (file.exists()) {
			if (file.isDirectory()) {
				String[] childFiles = file.list();
				for (String childFile : childFiles) {
					fileList.addAll(scan(dir + File.separator + childFile));
				}
			} else {
				if (AppConstants.DEPLOY_FILE_NAME.equalsIgnoreCase(file
						.getName())) {
					fileList.add(file);
				}
			}
		}
		return fileList;
	}

	public static void main(String[] args) {
		System.out.println(new Scanner().scan("E:/安装目录结构/resource/public"));
		System.out.println(new Scanner().scan("E:/安装目录结构/resource/comp"));
	}
}
